#ifndef _ENTITY_MANAGER_H
#define _ENTITY_MANAGER_H

#include <list>
#include <vector>
#include <memory>

class Entity;
class Collideable;
class Drawable;
class Level;
class RenderManager;
class EntityManager
{
public:
	EntityManager(Level* currentLevel);
	~EntityManager(void);

	void addEntity(Entity* entity);
	void update();
	void draw(RenderManager* renderManager);
	void initialize();
	void removeAllEntities();

private:
	bool verifyCollisionType(Collideable*, Collideable*);

	std::list<Entity*> _entities;
	std::list<Drawable*> _drawables;
	std::list<Collideable*> _collideables;
	std::vector<Entity*> _removeList;
	Level* _currentLevel;
};

#endif // _ENTITY_MANAGER_H

